/**
 * Created by jn-dinggao on 2017/10/26.
 */
/** 工具服务 **/
app.factory('UiUtilService',function($filter){
    var factory = {};

    /**
     * 日期格式化
     */
    factory.dateFormatter = function(longDate){
        return $filter('date')(longDate, "yyyy-MM-dd HH:mm:ss");
    };

    /**
     * 日期格式化
     */
    factory.dateFormatterYmd = function(longDate){
        return $filter('date')(longDate, "yyyy-MM-dd");
    };

    /**
     * 日期格式化
     */
    factory.dateFormatterYm = function(longDate){
        return $filter('date')(longDate, "yyyy-MM");
    };

    /**
     * 获取某年某月的最后一天（例如：2017年11月，则返回30）
     * @param year
     * @param month
     * @returns {number}
     */
    factory.getLastDayByMonth = function (year,month) {
        var new_year = year;    //取当前的年份
        var new_month = month++;//取下一个月的第一天，方便计算（最后一天不固定）
        if(month>12) {
            new_month -=12;        //月份减
            new_year++;            //年份增
        }
        var new_date = new Date(new_year,new_month,1);                //取当年当月中的第一天
        return (new Date(new_date.getTime()-1000*60*60*24)).getDate();//获取当月最后一天日期
    };


    /**
     * 金额大写格式化
     * @param input
     * @returns {string}
     * @constructor
     */
    factory.CapitalAmountFilter = function(input){
        var numberValue=new String(Math.round(input*100)); // 数字金额
        var chineseValue=""; // 转换后的汉字金额
        var String1 = "零壹贰叁肆伍陆柒捌玖"; // 汉字数字
        var String2 = "万仟佰拾亿仟佰拾万仟佰拾元角分"; // 对应单位
        var len=numberValue.length; // numberValue 的字符串长度
        var Ch1; // 数字的汉语读法
        var Ch2; // 数字位的汉字读法
        var nZero=0; // 用来计算连续的零值的个数
        var String3; // 指定位置的数值
        if(len>15){
            alert("超出计算范围");
            return "";
        }
        if (numberValue==0){
            chineseValue = "零元整";
            return chineseValue;
        }
        String2 = String2.substr(String2.length-len, len); // 取出对应位数的STRING2的值
        for(var i=0; i<len; i++){
            String3 = parseInt(numberValue.substr(i, 1),10); // 取出需转换的某一位的值
            if ( i != (len - 3) && i != (len - 7) && i != (len - 11) && i !=(len - 15) ){
                if ( String3 == 0 ){
                    Ch1 = "";
                    Ch2 = "";
                    nZero = nZero + 1;
                }
                else if ( String3 != 0 && nZero != 0 ){
                    Ch1 = "零" + String1.substr(String3, 1);
                    Ch2 = String2.substr(i, 1);
                    nZero = 0;
                }
                else{
                    Ch1 = String1.substr(String3, 1);
                    Ch2 = String2.substr(i, 1);
                    nZero = 0;
                }
            }
            else{ // 该位是万亿，亿，万，元位等关键位
                if( String3 != 0 && nZero != 0 ){
                    Ch1 = "零" + String1.substr(String3, 1);
                    Ch2 = String2.substr(i, 1);
                    nZero = 0;
                }
                else if ( String3 != 0 && nZero == 0 ){
                    Ch1 = String1.substr(String3, 1);
                    Ch2 = String2.substr(i, 1);
                    nZero = 0;
                }
                else if( String3 == 0 && nZero >= 3 ){
                    Ch1 = "";
                    Ch2 = "";
                    nZero = nZero + 1;
                }
                else{
                    Ch1 = "";
                    Ch2 = String2.substr(i, 1);
                    nZero = nZero + 1;
                }
                if( i == (len - 11) || i == (len - 3)){ // 如果该位是亿位或元位，则必须写上
                    Ch2 = String2.substr(i, 1);
                }
            }
            chineseValue = chineseValue + Ch1 + Ch2;
        }

        if ( String3 == 0 ){ // 最后一位（分）为0时，加上“整”
            chineseValue = chineseValue + "整";
        }
        return chineseValue;
    };


    /**
     * 设置开始时间，设置格式为（00:00:00）
     * @param time
     */
    factory.setStartTime = function (endTime) {
        var time = new Date(endTime);
        time.setHours(00);
        time.setMinutes(00);
        time.setSeconds(00);
        return time;
    };

    /**
     * 设置结束时间，设置格式为（23:59:59）
     * @param time
     */
    factory.setEndTime = function (endTime) {
        var time = new Date(endTime);
        time.setHours(23);
        time.setMinutes(59);
        time.setSeconds(59);
        return time;
    };

    /**
     * 时间对比，time1 < time2 则返回true
     * @param time1
     * @param time2
     * @returns {boolean}
     */
    factory.compareDate = function (time1,time2) {
        var startTime = new Date(Date.parse(time1));
        var endTime = new Date(Date.parse(time2));
        //进行比较
        return (endTime >= startTime);
    };

    /**
     * 验证Double类型
     */
    factory.isDouble = function (value) {
        var reg = /^[-\+]?\d+(\.\d+)?$/;
        if(reg.test(value)){
            return true;
        }else{
            return false;
        }
    };
    return factory;
});